53 research outputs found

    Exploration of Compiler Optimization Sequences Using a Hybrid Approach

    Get PDF
    Finding a program-specific compiler optimization sequence is a challenge, due to the large number of optimizations provided by optimizing compilers. As a result, researchers have proposed design-space exploration schemes. This paper also presents a design-space exploration scheme, which aims to search for a compiler optimization sequence. Our hybrid approach relies on sequences previously generated for a set of training programs, with the purpose of finding optimizations and their order of application. In the first step, a clustering algorithm chooses optimizations, and in the second step, a metaheuristic algorithm discovers the sequence, in which the compiler will apply each optimization. We evaluate our approach using the LLVM compiler, and an I7 processor, respectively. The results show that we can find optimization sequences that result in target codes that, when executed on the I7 processor, outperform the standard optimization level O3, by an average improvement of 8.01 % and 6.07 %, on Polybench and cBench benchmark suites, respectively. In addition, our approach outperforms the method proposed by Purini and Jain, Best10, by an average improvement of 24.22 % and 38.81 %, considering the two benchmarks suites

    Parallelism in Prolog: concepts and systems

    Get PDF
    Parallelism is a study area that grows up each day, caused by the cost reduction and popularizing of machines with parallels architecture. In this context, the logical languages, especially PROLOG, show a feasible and practical alternative of parallelism. This exploitation can be accomplished of different ways, and are there several challenges on this task. This survey aims to show the main concepts of parallelism in PROLOG, the faced challenges when aims to do parallelism in this language and the state-of-art of systems development to give parallelism support in logical languages. Systems with basis on implicit parallelism developed in different platforms are presented. At the end, is accomplished a comparison between the presented systems and the implemented models by they.Paralelismo é uma área de estudo que cresce a cada dia, devido à redução do custo e popularização de máquinas com arquiteturas paralelas. Nesse contexto, as linguagens lógicas, sobretudo o PROLOG, apresenta uma alternativa viável e prática de paralelismo. A exploração desse paralelismo pode ser realizada de diferentes formas, e há inúmeros desafios nessa tarefa. Este tutorial visa apresentar os principais conceitos de paralelismo em PROLOG, os desafios enfrentados quando se busca a paralelização nessa linguagem e o estado-da-arte do desenvolvimento de sistemas que dão suporte à paralelização em linguagens lógicas. São apresentados sistemas baseados em paralelismo implícito implementados em diferentes plataformas. Ao final é realizada uma comparação entre os sistemas apresentados e os modelos neles implementados

    Compilação Just-In-Time: Histórico, Arquitetura, Princípios e Sistemas

    Get PDF
    Diversas implementações de linguagens de alto nível focam no desenvolvimento de sistemas baseados em mecanismos de compilação just-in-time. Esse mecanismo possui o atrativo de melhorar o desempenho de tais linguagens, mantendo a portabilidade. Contudo, ao preço da inclusão do tempo de compilação ao tempo total de execução. Diante disso, as pesquisas na área têm voltado balancear o custo de compilação com eficiência de execução. Os primeiros sistemas de compilação just-in-time empregavam estratégias estáticas para selecionar e otimizar as regiões de código propícias para gerar bom desempenho. Sistemas mais sofisticados aprimoraram tais estratégias com o objetivo de aplicar otimizações de forma mais criteriosa. Nesse sentido, este tutorial apresenta os princípios que fundamentam a compilação just-in-time e sua evolução ao longo dos anos, bem como a abordagem utilizada por diversos sistemas para garantir o balanceamento de custo e eficiência. Embora seja difícil definir a melhor abordagem, trabalhos recentes mostram que estratégias rígidas para detecção e otimização de código, juntamente com recursos de paralelismo oferecidos pelas arquiteturas multi-core formarão a base dos futuros sistemas de compilação just-in-time

    Paralelismo em Prolog: Conceitos e Sistemas

    Get PDF
    Paralelismo é uma área de estudo que cresce a cada dia, devido à redução do custo e popularização de máquinas com arquiteturas paralelas. Nesse contexto, as linguagens lógicas, sobretudo o PROLOG, apresenta uma alternativa viável e prática de paralelismo. A exploração desse paralelismo pode ser realizada de diferentes formas, e há inúmeros desafios nessa tarefa. Este tutorial visa apresentar os principais conceitos de paralelismo em PROLOG, os desafios enfrentados quando se busca a paralelização nessa linguagem e o estado-da-arte do desenvolvimento de sistemas que dão suporte à paralelização em linguagens lógicas. São apresentados sistemas baseados em paralelismo implícito implementados em diferentes plataformas. Ao final é realizada uma comparação entre os sistemas apresentados e os modelos neles implementados

    O Potencial do Uso de Estimativas de Desempenho na Exploração de Conjuntos de Otimizações

    Get PDF
    Compiladores modernos tradicionalmente adotam estratégias de maior generalidade. Em contrapartida, para se aproveitar das especificidades de cada programa, surgem os compiladores iterativos. Esses exploram diferentes conjuntos de otimizações com o objetivo de encontrar o melhor para cada programa, maximizando uma função objetivo. Quando estamos buscando melhorias de desempenho, essa função é o tempo de execução. Uma forma prática de se obter o tempo de execução de um programa é executando o mesmo, porém a execução pode ser demorada tornando a exploração inviável. Para isso, uma solução é a estimativa de desempenho. Nesse artigo apresentamos uma ferramenta de estimativa de desempenho para auxiliar a tarefa de exploração do espaço de otimizações por compiladores iterativos. Diferentes técnicas foram avaliadas, onde foi possível mostrar que mesmo com estimativas aproximadas pode-se obter bons resultados. Além disso, as estimativas reduziram o tempo da exploração em até duas ordens de magnitudes

    Finding Effective Compiler Optimization Sequences: A Hybrid Approach

    Get PDF
    The Optimization Selection Problem is widely known in computer science for its complexity and importance. Several approaches based on machine learning and iterative compilation have been proposed to mitigate this problem. Although these approaches provide several advantages, they have disadvantages that can hinder the performance. This paper proposes a hybrid approach that combines the best of machine learning and iterative compilation. Several experiments were performed using different strategies, metrics and hardware platforms. A thorough analysis of the results reveals that the hybrid approach is a considerable improvement over machine learning and iterative compilation. In addition, the hybrid approach outperforms the best compiler optimization level of LLVM

    PColorAnt3-RT: Um Algoritmo ACO Paralelo para Coloração de Grafos

    Get PDF
    Em trabalhos anteriores foram apresentadas investigações de três diferentes algoritmos baseados em Ant Colony Optimization (ACO) aplicados ao problema de coloração de grafos com k cores. Os resultados obtidos demonstraram que ColorAnt_3-RT é o melhor dentreos três algoritmos ColorAnt-RT, sendocapaz de obter boas e até mesmo ótimas soluções para os melhores valores de k descritos na literatura, além de minimizar a quantidade de conflitos.Porém, em aplicações onde o tempo de execução é um fator crucial, algoritmos ACO não tem sido utilizados. Este artigo propõe e demonstra o uso de uma abordagem paralela para uma arquitetura de {\it hardware} com memória compartilhada com o objetivo de reduzir o tempo de execução de ColorAnt_3-RT, originando o algoritmo paralelo PColorAnt_3-RT que é capaz de encontrar boas e ótimas soluções em tempo de execução aceitável

    ColorAnt-RT: Algoritmo de Coloração de Grafo que utiliza Colônia de Formigas aplicado a Alocação de Registradores

    Get PDF
    Este artigo apresenta os algoritmos ColorAnt-RT para o problema dacoloração de grafos, os quais foram desenvolvidos para serem utilizados em umalocador de registradores. Os experimentos demonstram que ColorAnt3-RT é uma boa opção dentre os desenvolvidos para encontrarboas aproximações para diversas classes de grafos. Além disto, os experimentostambém demonstram que o alocador de registradores implementado possui umdesempenho superior aquele obtido pelo alocador de registradores proposto porGeorge e Appel

    Evaluating knowledge representations for program characterization

    Get PDF
    Knowledge representation attempts to organize the knowledge of a context in order for automated systems to utilize it to solve complex problems. Among several difficult problems, one worth mentioning is called code-generation, which is undecidable due to its complexity. A technique to mitigate this problem is to represent the knowledge and use an automatic reasoning system to infer an acceptable solution. This article evaluates knowledge representations for program characterization for the context of code-generation systems. The experimental results prove that program Numerical Features as knowledge representation can achieve 85% near to the best possible results. Furthermore, such results demonstrate that an automatic code-generating system, which uses this knowledge representation is capable to obtain performance better than others codegenerating systems
    corecore